STM32 电机控制 SDK MCFW-6.4.1
用于构建驱动 STM32 的 PMSM 电机应用的软件开发套件
辅助速度传感器的使用

上一页:正交编码器传感器反馈处理 ↤|目录 |↦ 下一页:固件使用的测量单位

从一开始,MCSDK就支持为FOC控制类型添加辅助传感器。

图1:从MC Workbench启用辅助传感器

在6.4.0版本之前,辅助传感器的使用仅限于调试和调谐传感器(HALL或编码器),允许显示主传感器和辅助传感器两个角度。

此功能特别有助于检查霍尔传感器“置放电角度”的精确性,并且是通过电机配置文件仪分析霍尔传感器参数的必备功能。检查编码器对准是否正确也很有用。

辅助传感器计算电速度和角度,就像它作为主传感器一样,但计算出的角度从未作为FOC算法的输入。

从6.4.0版本开始,新增了两个API,允许应用代码在电机转动时使用辅助传感器替代主传感器:

  • bool MC_SensorSwitchMotor1 (uint16_t deltaAngleMargin)
  • bool MC_SensorSetMotor1 (uint16_t deltaAngleMargin, SpeednPosFdbk_Handle_t *newSensor)

需要注意的是,你的电机始终会从你在项目创建时配置的主传感器开始。默认配置在每次电机启动时应用,无论最后一次电机停止时使用哪种主要传感器。

这两个API都将参数作为第一参数。 表示允许切换的主传感器与辅助传感器角度之间的绝对误差值。只要项目包含辅助传感器,高频任务中会持续计算误差。该参数保证在切换时,两个传感器之间的转换能满足您的应用和电机需求。deltaAngleMargindeltaAngleMargin

角度误差是在以 s16 度表示的值之间计算的

在开发测试中,我们使用了等于1000的值,代表5.5电度,且未发现控制有任何不连续。当然,这个数值必须根据你的发动机和应用需求进行调校。deltaAngleMargin

API采用额外的参数。该参数只能是主传感器地址或辅助传感器地址。如果你传递主传感器地址,函数调用不会生效,返回的值将是 。MC_SensorSetMotor1SpeednPosFdbk_Handle_t *newSensortrue

如果参数是辅助传感器的地址,且条件允许切换,则主传感器将被设置为,旧的主传感器将Save为新的辅助传感器,功能返回。newSensordeltaAngleMarginnewSensortrue

该参数是一个类型的指针,允许通过任何类型的速度传感器(包括不含卢恩伯格观察者)、STO_CR_Handle_tSTO_PLL_Handle_tHALL_Handle_tENCODER_Handle_t。这得益于铸造 的 ,因为所有这些结构的第一参数都是类型 的成员。newSensorSpeednPosFdbk_Handle_tSpeednPosFdbk_Handle_t *_SuperSpeednPosFdbk_Handle_t

供您参考,这里有一段来自main.c的代码片段,用来演示该API的正确使用方法:

bool 允许切换高 = true;
...
...
MC_ProgramSpeedRampMotor1(RPM_2_SPEED_UNIT(2000),1000页);
MC_StartMotor1();
HAL_Delay(4000);
虽然(1)
{
/* 用户代码结束
/* 用户代码开始 3 */
如果 (SPEED_UNIT_2_RPM(MC_GetMecSpeedAverageMotor1()) > 2100 & AllowSwitchHigh ){
如果 (MC_SensorSetMotor1(1000, (SpeednPosFdbk_Handle_t *) & STO_PLL_M1))
{
AllowSwitchHigh = false;
}
}
否则 {
如果 (SPEED_UNIT_2_RPM(MC_GetMecSpeedAverageMotor1()) < 1000 且 & !允许切换高) {
如果 (MC_SensorSetMotor1(1000, (SpeednPosFdbk_Handle_t *) & ENCODER_M1))
{
AllowSwitchHigh = true;
}
}
}
}
/* 用户代码结束 3 */
}

电机在重置后2000秒内启动并达到1转/分钟。

如果电机转速低于1000,我们切换到编码器;如果转速超过2100,则切换到STO_PLL。

此次测试通过Motor Pilot调整了电机转速。

限制

- HSO算法目前不支持辅助传感器。

- 主传感器和辅助传感器不能同时是物理传感器(编码传感器或霍尔传感器)。

- 位置控制模式仅支持编码器作为主传感器。如果选择了该API,MC_SensorSwitchMotor和MC_SensorSetMotor API将无法使用。

上一页:正交编码器传感器反馈处理 ↤|目录 |↦ 下一页:固件使用的测量单位